EN FR
EN FR


Section: Scientific Foundations

Rule-based Languages

Logic programming in a broad sense is a declarative programming paradigm which relies on the following identifications:

program = logical formula,

execution = proof search,

In Constraint Satisfaction Problems (CSP), the logical formulae are conjunctions of constraints (i.e. relations on variables expressing partial information) and the satisfiability proofs are computed by constraint solving procedures.

In Constraint Logic Programming (CLP), the logical formulae are Horn clauses with constraints (i.e. one headed rules for the inductive definitions of relations on variables) and the satisfiability proofs combine constraint solving and clause resolution.

Concurrent Constraint Programming (CCP) extends CLP resolution with a synchronization mechanism based on constraint entailment. The variables play the role of transmissible dynamically created communication channels. An agent may add constraints to the store or read the store to decide whether a constraint guard is entailed by the current store. CCP execution can be identified to deduction in J.Y. Girard's Linear Logic by interpreting multisets of constraints and agents as tensor product conjunctions and guards and rules as linear implications(F. Fages, P. Ruet, S. Soliman. Linear concurrent constraint programming: operational and phase semantics, in “Information and Control”, 2001, vol. 165(1), pp.14-41.).

The logical completeness of CCP in LL continues to hold when considering linear logic constraint systems, i.e. constraint systems where constraints can be consumed by implication. This extension, named Linear Logic Concurrent Constraint Programming (LLCC), allows for a non-monotonic evolution of the store of constraints and can encode multi-headed rules like the Constraint Handling Rules (CHR) language of T. Frühwirth.

All these rule-based languages, of increasing expressivity, involve some form of multiset rewriting. For solving combinatorial optimization problems, we use Gnu-Prolog (CLP family), Sicstus-Prolog or SWI-Prolog (CCP family), Rules2CP , a rule-based modeling language that we develop for non-programmers (CLP variant without recursion nor scope for variables), Comet TM , another constraint modeling language, or SiLCC, our own implementation of LLCC. In the Biochemical Abstract Machine Language BIOCHAM we develop for Systems Biology, biochemical reactions between multisets of reactants and products are expressed with multi-headed rules (somewhat similar to CHR rules) but given with kinetic expressions from which one can derive quantitative interpretations by Ordinary Differential Equations (ODE), Continuous-Time Markov Chains (CTMC) or Hybrid Automata.